home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SPACE 2
/
SPACE - Library 2 - Volume 1.iso
/
apps
/
42
/
wind14.prf
< prev
next >
Wrap
Text File
|
1986-07-17
|
23KB
|
438 lines
.!****************************************************************************
.!
.! ANTIC PUBLISHING INC., COPYRIGHT 1985. REPRINTED BY PERMISSION.
.!
.! ** Professional GEM ** by Tim Oren
.!
.! Proff File by ST enthusiasts at
.! Case Western Reserve University
.! Cleveland, Ohio
.! uucp : decvax!cwruecmp!bammi
.! csnet: bammi@case
.! arpa : bammi%case@csnet-relay
.! compuserve: 71515,155
.!
.!****************************************************************************
.!
.!
.!****************************************************************************
.!
.! Begin Part XIV
.!
.!****************************************************************************
.!
.PART XIV USER INTERFACES - Part 2
.PP
This issue of ST PRO GEM (#14) continues the discussion of
user interface design which began in episode eight. It begins
where we left off, with a further treatment of the mode problem,
and proceeds into topics such as visual grammar and layered
interfaces.
.PP
Note that there is no download for this column. The
downloads will return with the next issue, a discussion of using
the GEM DOS file system within a GEM application. Specifically,
it will include sample code for using the file selector, the GEM
form_error alerts, and some utilities for manipulating file and
path names. There will also be a feedback section. The following
two columns will be devoted to "graphics potpourri", a collection
of small but useful GEM utilities such as popup menus, string
editing, and source code for drag and rubber box operations.
.SH MODES AGAIN
If a program is modeless, it acts predictably,
which turns out to be very important. On the other hand, a good
definition for "modes" is hard to find. In column eight, I
suggested that a mode exists when you cannot use all of the
capabilities of the program without performing some intermediate
step. If this is less than clear, here are two alternate
definitions offering different views of the problem.
.SH THE "TWO USER TEST"
Consider the following thought
experiment: Imagine that your ST (and GEM) had two mice, two
cursors, and two users. Could they both effectively use the
program at the same time? If so, the application is modeless. If
there are points where one user can be "locked out" by the actions
of the other, then a mode exists at that point. Let's consider
some examples of this test.
.PP
In any program which uses the GEM menu system, one user could
stop the other by touching a menu hotspot and dropping a menu.
This constitutes an inherent mode in the GEM architecture.
.PP
On the GEM Desktop, two users could open windows and view
files without interference. However, as soon as one person tries
to delete a file (assuming the verify option is on), the other is
brought to a halt as a dialog appears. Thus, we have found a
modal dialog.
.PP
In many "Paint-type" programs, such as MacPaint, PC Paint,
and GEM Paint, two artists could co-exist quite well, utilizing
the on-screen palette and tool selection. Of course, these
programs also contain modal dialogs for such operations as file
and brush shape selection. In contrast, consider the paint
program DEGAS for the ST. Here, two artists could only work
together as long as neither wanted to change tool or color. Then
the display would have to be flipped to the selection screen,
stopping the other user. This is a mode in the DEGAS interface.
.PP
(By the way, this test is not just academic. The grand-daddy
of all mouse based systems, NLS, demonstrated by Doug Englebart in
1968, had two mice and two users, one of whom was physically
remote. Cooperative techniques such as this are still largely
unexplored and unexploited.)
.SH ONE LINER
Here's a terse definition by Jef Raskin: A
program is modeless if a given action has one and only one result.
Again, let's run a few examples.
.PP
The menu dropdowns are clearly modal by this definition.
Before the menu was activated, window control points could be
activated with a click. However, when the dropdown is visible, a
click action is interpreted as a menu selection or a dismissal of
the dropdown. Similarly, dialogs are modal because the action of
moving the mouse into the menu bar no longer causes the dropdown
to appear.
.PP
I am typing this using the First Word editor program. It has
a nice desktop level box full of characters where I can click to
get symbols which the ST keyboard won't produce. However, if I
invoke the find or replace string dialog, the click-in-the-box
action doesn't work anymore. This is a mode in the First Word
interface.
.PP
Finally, consider an "old style" menu program, the kind where
you type in the number of the desired action from a list. Since
the number "2" might mean "Insert the record" in one menu, and
"Purge the file" in another, such a program is clearly modal by
Raskin's definition.
.PP
These three definitions say almost the same thing, but from
different viewpoints. Depending on the situation, one or the
other may be more intuitive for you. The goal of this type of
analysis is to root out unnecessary modes, and to make sure that
those which remain only appear when requested by the user, offer
some visual cue such as a rubber line or standard dialog box, and
are used consistently throughout the application.
.SH PREDICTABILITY FOREVER AND EVER AND EVER
As Raskin's
definition makes clear, when the modes go away, the interface
becomes predictable. Predictability leads to the formation of
habits of use. Habits reduce "think time" and become
progressively faster due to the Power Law of Practice discussed in
column eight. This is exactly what we want!
.PP
There is another benefit of predictability. A habit learned
in one part of a program with a consistent interface can be
transferred and used elsewhere in the application. If several
programs share the same style of interface, the same habits can be
used across a complete set of products. Learning time for the new
functions becomes shorter, and the user is more likely to use the
new feature.
.SH IS A BOGEYMAN!
Most casual users are scared silly of
computers and programs. (If you have any doubt, eavesdrop on a
secretary with a new word processor, or the doctor's receptionist
coping with an insurance data entry program.) In most cases, they
have a right to be frightened. Even experienced programmers,
prone to toss the manuals and hack away, know that moderate
paranoia is the best way to deal with an unknown program. How
must this feel to someone whose ability to perform (or lose) their
job depends on an unpredictable (aha!) black box.
.PP
So here's another way in which predictability works. But to
produce a truly fearless user, we need other qualities as well.
One is robustness, meaning that the program will not crash given
normal or even bizarre actions by the user. Another is feedback,
which shuts off invalid options, reinforces correct actions, and
gives reassurance that an operation is proceeding normally.
Finally, we need forgiveness, in the form of inverse operations or
Undo options, when the inevitable mistake is made.
.PP
The ultimate goal is make the program discoverable. This
means the user should be able to safely "wing it" after a short
session with the application and its interface. This practice
ought to be considered the norm anyway, since the manual is always
across the office or missing when an esoteric and half-forgotten
feature is needed. If it is possible to muddle through such a
situation by trial and error, without causing damage, the
immediate problem will be solved, and the user will gain
confidence.
.SH GOOD GRAMMAR OR...
So exactly what are these habits that are
supposed to be so helpful? One of the most useful patterns is a
consistent command grammar for the program. This may sound
strange, since we have supposedly abandoned command line
interfaces in the graphics world, but in fact, the same type of
rules apply. For instance, in the world of A> we might issue the
command:
.br
.sp
.ce
copy a:foobar.txt b:
.PP
By analogy to Englist grammar, this command contains a verb,
"copy", a file as subject: "a:foobar.txt", and a location as
an object: "b:". The equivalent GEM Desktop operation is:
.BO
- Move mouse to foobar.txt icon in a: window
.EO
.BO
- Press mouse button
.EO
.BO
- Move mouse to b: icon
.EO
.BO
- Release mouse button
.EO
.PP
The operation can be described as a select-drag-drop sequence,
with the select designating the subject file, the drag denoting
the operation (copy), and the location of the drop showing the
object. A grammar still exists, but its "terminal symbols" are
composed of mouse actions interpreted in the context of the
current screen display, rather than typed characters.
.PP
One useful way to analyze simple grammars, including those
used as command languages, is to separate them into prefix,
postfix, and infix forms. In a prefix grammer, the operation to
be performed precedes its operands, that is, its subject(s) and
object(s). The DOS copy command given above is an example of a
prefix command. LISP is an example of a language which uses
prefix specification for its commands.
.PP
Postfix grammars specify the action after all of the operands
have been given. This command pattern is familiar to many as the
way in which Hewlett-Packard calculators work. FORTH is an
example of a language which uses a postfix grammar.
.PP
Infix notation places the verb, or operator, between its
subject and object. Conventional algebraic notation is infix, as
are most computer languages such as C or PASCAL. The example GEM
command given above is also infix, since the selection of a
subject file preceded the action, which was followed by the
designation of an object.
.PP
The "standard" GEM command grammar, as used in the products
produced by Digital Research, is in fact infix. This is not to
say that GEM enforces such a convention, or that it is rigorously
followed. However, when there is no pressing reason for a change,
adoption of an infix command grammar will make your application
feel most like others which users may have seen.
.PP
The general problem of specifying a graphic command language
can be difficult, but much of the problem has already been handled
on the ST. Part of the solution is by constraint: the input and
output hardware of the ST are predefined, so most developers will
not need to worry about choosing a pointing device or screen
resolution. The other part of the standard solution is the GEM
convention for mouse usage. I am going to review these rules, and
then describe of the situations in which they have been bent, and
finally some alternate approaches which may prove useful to some
developers.
.SH SPECIFYING A SUBJECT
There are really two sets of methods
for designating what is to be affected by an operation. One set
is used when distinct objects are to be affected. Examples are
file and disk icons in the Desktop and trees in the RCS. Another
set of designation methods is used when continuous material, such
as text or bit images, is being handled.
.PP
When dealing with objects, a single mouse click (down and up)
over the object selects it. The application should show that the
selection has occurred by changing the appearance of the object.
The most common methods are inverting the object, or drawing
"handles" around it.
.PP
Many operations allow "plural", or multiple object,
selections. The GEM convention is that a click on an object while
the shift key is held down extends the selection by adding that
object. If the shift-clicked object was already selected, it is
deleted from the selection list.
.PP
Another way to select multiple objects is to use a "rubber
box" to enclose them. This operation begins with drag on a part
of the view where no object is present. The application then
animates a rubber box on the screen as long as the mouse button is
held down. When the button is released, all objects within the
current extent of the box are selected. A shift-drag combination
could be used to add the objects to an existing selection list.
.PP
Selecting part of a text or bit plane display is also done
with a rubber box. Since there are no "objects" in the view, any
mouse drag is interpreted as the beginning of a selection
operation. In the simplest case, a bit plane, the rectangle
within the box when the button is released is the selected extent.
.PP
When the underlying data has structure, such as words and
lines of text, the display should reflect this fact during the
selection operation. Typically, text selection is indicated by
inversion of the characters rather than a rubber box. The
selection extends along the starting line so long as the mouse
stays within the line. If the mouse move off the starting text
line, the implied selection is all characters between the starting
character and the character currently under the mouse, which is
not necessarily a rectangular area.
.PP
An extended "plural" selection may be supported in text
editing. The use of the shift key is also conventional in this
application.
.SH ACTION
With the subject designated, the user can now choose
an operation. In many cases, this will be picked from the menu,
in which case the entire command is complete. Some menu
selections will lead to dialogs, in which the interaction methods
are regulated by the GEM form manager. When the command is
completed, it is often helpful if the application leaves the
objects (or areas) selected and ready for another operation. A
single click away from any object is interpreted as cancelling the
selections.
.PP
Many operations are indicated by gestures on the screen.
Usually, this is some variant of a drag operation. The
interpretation of the gesture may depend on the type and location
of the selected subject, which part of it is under the mouse, and
in what location the drag terminates.
.PP
"Handles" are small boxes or dot displayed around an object
when it is selected. A drag beginning with the mouse on a handle
is usually interpreted as a resizing operation, if this is
appropriate. The pointing finger mouse form is displayed to
indicate the operation in progress, and a rubber version of the
object is animated on the screen to show the user the result if
the button were released. In some cases, where an underlying
"snap" grid exists, the animated object may change size in
discrete steps.
.PP
Dragging a non-handle area of a selected object is usually
interpreted as the beginning of a move function. In most
applications, a move of a single object may be started without
pre-selection. Simply beginning the drag on the object is taken
to imply selection. The spread hand, or "grabber", mouse form is
typically displayed during a drag operation.
.PP
Dragging may denote copying or movement, or more complex
functions such as instantiation or generalization. The operation
implied by movement on the screen will differ among applications,
and often within the same application, depending on target
location. This target is the recipient of the command's action,
or its object, in an English grammar sense.
.PP
For example, a drag from window to window in the Desktop
denotes a copy. On the other hand, dragging the same icon to the
trashcan deletes it completely. Dragging an object from the RCS
partbox to the editing view creates a new copy of that prototype
object. Dragging the same object within the edit view simply
changes its placement.
.PP
There are some mouse actions which are conventional
"abbreviations". A double click on an object is interpreted as
both a selection and an action. Usually, the double click action
is the same as the Open entry in the "File" menu.
.PP
When the usual interpretation of a drag is movement, then
shift-drag may be used as an enhanced varient implying copying.
For instance, shift-dragging an object within the RCS editing
window makes a copy of the object and places it in the final
location.
.PP
To return to the beginning of this discussion, the reason for
adopting these conventional usages is to build an interface that
promotes habits. Particularly, a standard grammar for giving
commands helps answer the question "What comes next?". It breaks
the user's actions into logical phrases, or chunks, which may be
thought of a whole, rather than one action at a time.
.SH DIFFERENT FOLKS, DIFFERENT STROKES
.PP
There are always
exceptions to a rule, or so it seems. In this case, consistency
of the interface grammar is sometimes traded off against
consistency of metaphor, preservation of screen space, and "fast
path" methods for experts.
.PP
One example is the use of "tools" in Paint and Draw programs.
In such programs, an initial click is made on a tool icon,
denoting the operation to be applied to all following selections.
This is an prefix style of grammar, and stands in contrast to the
usual method of selecting subject object(s) first. Because of
this contrast, it is sometimes called "moding the cursor". (Try
applying the tests above to be sure it really is a mode.)
.PP
In these cases, there are two reasons for accepting the
nonstandard method. The first is consistency of metaphor. The
"user model" portrayed in the programs is an artist's work table,
with tools, palette, and so on. The cursor moding action is
equivalent to picking up a working tool. The second reason is
speed. In a Paint program, the "canvas" is often modified, and
speed in creating or changing the bits is important. In more
object oriented applications such as Desktop or RCS, the objects
are more persistent. Speed is then more essential when adding or
changing properties of the objects.
.PP
When command styles are mixed in this fashion, you must
design very carefully to avoid conflicts or apparent side-effects
in the command language. For example, in GEM Draw picking an
action from the Edit menu cancels the current cursor mode without
warning. Confusion from such side-effects may cancel out the
benefits of the mixed grammar.
.PP
The subject of command speed deserves further attention.
While the novice approaching a program needs full feedback, a
person who uses it day in and day out will learn the program, and
want faster ways to get the job done, even if they are more
arcane. The gives rise to a "layered" style of interface.
.PP
A layered interface is designed so that the visual grammar is
obvious, as we have discussed. However, there are one or more
sets of "accelerators" built into the program, which may be harder
to find but faster to use. One example is condensed mouse actions
such as the double-click. For instance, attempting to select a
block of text which extends beyond a window is impossible using
the basic metaphor. The novice will simply do the operation in
pieces. A layered interface might put a less obvious Mark Begin
and Mark End option in the menus. Another way is to take a drag
which extends outside the window as a request to begin scrolling
in that direction, while extending the current selection.
.PP
One of the most common and useful accelerator methods is
function keys. Using this approach, single key equivalents to
actions are listed in the menu. Striking this key when an object
is selected will cause the action to occur. Note that this is
most useful if some keyboard driven method of object selection,
such as tabbing, is also available. Otherwise, the time switching
from the mouse, used to select the object, to the keyboard for
command input, may well cancel any advantage.
.PP
Finally, radical departures from the GEM metaphor may be
useful when attempting to replicate the look of another system, or
trying to meet severe constraints, such as display space. One
example would be discarding the standard GEM menus in favor of
"popup" menus which appear next to the current mouse position in
response to a click on the second button. This method has the
advantage of preserving the menu space at the top of the screen,
and is potentially faster because the menu appears right next to
the current mouse position. The drawbacks are lack of a visual
cue for naive users trying to find the commands, and the need for
custom coding to build the popups.
.SH MORE TO COME
We have reached the end of the second sermon
on user interface. In a future column, I will look at "higher
level" topics relating to the design of the application's user
metaphor. These include issues of object orientation, direct
manipulation, and the construction of microworlds. In the
meantime, several of the more practical columns will present
implementions of techniques such as accelarator keys and popup
menus which I have discussed this time.
.PP
THANKS AND APOLOGIES to the following people whose public and
published remarks have formed part of the basis of this
discussion: Jef Raskin, Bill Buxton, Adele Goldberg, James Foley,
and Ben Schneidermann. As always, any errors are my own.
.!
.!
.!*****************************************************************************
.!* *
.!* End Part XIV *
.!* *
.!*****************************************************************************